#ifndef INPUT_H
#define INPUT_H

//DirectInput libs
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")
#pragma comment (lib, "dxerr9.lib")

#include <dinput.h>
#include <string>

typedef struct _InputData {
  unsigned long device;
  const DIDEVICEOBJECTDATA * data;
} InputData;

bool operator==(const InputData & lhs, const InputData & rhs);
bool operator!=(const InputData & lhs, const InputData & rhs);

const InputData NO_INPUT_DATA = {0, NULL};

//initializer
long InitInput(HWND m_hWnd);

//clean-up function
long DestroyInput();

//get input
long GetInputData();

//pop off the next input event
InputData NextInput();

std::string InputToString(const InputData & data);

unsigned long JoystickCount();

#endif
